When computers and applications communicate between each other, they must use an agreed upon protocol. Unlike humans however, computers cannot tolerate even the most subtle of differences in the implementation of protocols. Every bit, byte, and combination thereof used by the two systems must be interpreted by both sides to mean exactly the same thing. Further complicating this matter is that there is a large variety of protocols in use today. Their purposes and complexities vary widely. Traditionally, the translation from one protocol to another has entailed the process of hand coding the translation process.
In many areas of communications, especially in military applications, data is transferred between various pieces of equipment. In the military, such data is transmitted using a datalink, for example, a link 16 datalink. Data transmission over these datalinks are becoming increasing complex since some datalinks do not use the same data or may not interpret data in the same manner as other datalinks. In addition, the complexity is increased due to additional datalinks being created for new or improved pieces of equipment.
Currently, the transmission of data between different datalinks involves coding specialized programs to interpret information from one datalink and converting the information into a format that can be used by another datalink. In order to provide this specialized software, software engineers must familiarize themselves with protocols from each datalink to know what information is required for each datalink to function correctly. Hand coding protocol translations has been done for years and has been shown to be very tedious, costly, and error prone due to the largely human aspect of this process, requiring each software engineer assigned to creating a link interface to know what information is required for a given datalink.
Once a software engineer is familiar with all the requirements for each datalink included in a link interface, the software engineer must provide a program for interpreting datalink information and converting the information into a format for use with other datalinks connected to the link interface. Such a program involves manual entry of information required by each datalink as well as interpreting how information should be transmitted to another datalink although there may not be a direct correlation with another datalink. Creating a program each and every time different datalinks interface interact involves substantial manpower and time. In addition, due to the monotony of such a task for a software engineer, programming errors abound which increase the time frame for developing each program as well as the cost for the production of each program.
In an attempt to address some of these issues, the development community has embraced the extensible Markup Language (XML) as the defacto standard for exchanging information between computers. Unfortunately, there are several drawbacks to XML which make this process less than optimal. First, XML tends to be very bandwidth hungry. This can be a crippling problem for systems having bandwidth constraints. Further, XML is a set of guidelines for building a protocol, in and of itself is not a protocol. Thus, each developer still has to do the work necessary to define what the protocol is comprised of. This means that again, the two machines must agree on how to interpret the XML just as if the protocol was written in a binary form. So XML by itself does not solve this problem. Extensible Stylesheet Language Transformation (XSLT) was developed to translate XML to/from other formats, but it does not handle the translation of binary message formats, and is also constraining in the fact that it is a black box process which means that it can be difficult to inject custom translations which cannot be defined by XSLT alone. XSLT also tends to be a very process intensive process thereby consuming memory and processing resources that are otherwise needed by the application that an operator may be trying to run. Finally, there are many protocols in use today that require translation from one format to the next. Many of these protocols are binary.
There is a need for a tool that can assist in the interface of systems using different communications protocols. In addition, there is a need and desire to provide software that reduces the need for specialized programs for use as an interface between different datalinks. Accordingly, there is a need and desire for a method and software tool to that will facilitate the development of translation software for the exchange of information over opposing protocols without the need to hand code each translation.